Hard Expire Date

SoftwareShield System Feature Guide > Expiring Licenses > Hard Expire Date

## Hard Expire Date

You should already have a basic understanding of expiration types in the SoftwareShield System, If not please read Expiring Licenses in this reference.

A Hard Expire Date causes the license to expire based on the passage of time. The date you specify is an absolute date in UTC time coordinates on which the license will expire regardless of when the license is first run on a particular machine. If the date is in the past, the license would be immediately expired the first time it was run.

Note that the Hard Date is stored in UTC time, so is not affected by daylight savings time or time zone differences between the client machine and the server machine where Activation Codes may be generated.

Using a Hard Expire Date is not the best way to implement trial versions of your software. Instead, see Expire Period.

When the ClientProtector starts up a license with a Hard Expire Date, it considers it to be expired only if the current day is equal to, or greater than the Hard Expire Date. The license may be started an arbitrary number of times before the Hard Expire Date. Because a Hard Expire Date is an absolute point in time, the license begins to expire the moment you define it to have a hard expire date, regardless of if you have even distributed it to a customer.

You can find the actual Hard Expire Date at run time using two different function calls on the ClientProtector. (see below)

If a license is currently under the effect of a Hard Expire Date, regardless of if it has expired or not, the license is said to be in Expire Mode. When you issue an Activation Code for a Release All Expiration Authorization Definition, you remove the license from Expire Mode. Once removed, the license can not be placed back into Expire Mode.

Authorization Definitions that can be used to manipulate an Expire Mode license that uses a Hard Expire Date are:

1. Release All Expiration Authorization Definitions

2. Change Expiration Date Authorization Definitions

Since the most common attack on an Expire Mode license is turning the system clock back to gain additional usage, the ClientProtector detects if time has moved backward since it was last started on a particular license. If detected, it will return a special code (FALSE_CLOCK_TURNED_BACK) to your software that will allow you to (optionally) prompt the user to correct their clock. Unlike other possible inconsistent states of a license, when the clock is detected to have been turned back, the license cannot be "recovered" until the clock is corrected. (See License Recovery for more information).

Checking the expiration state of your license primarily occurs in the ClientProtector StartUp function. For a view of the logical flow of control, see the SoftwareShield ClientProtector Control Flow-Charts.

### More Information

For help on actually setting the Hard Expire Date of a license, see Expiration Tab in the SoftwareShield License Manager Reference.

For help on actually retrieving at run-time the Expire Date, see GetExpireDate and GetHardExpireDate in the SoftwareShield ClientProtector Reference.